﻿
namespace EasyStep.TestExecution.Interfaces
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using EasyStep.Business.Interfaces;
    using EasyStep.Business.Interfaces.Managers;
    using log4net;
    using EasyStep.Data.Entities;


    [Serializable]    
    public delegate void TestStepEventHandler(ITestExecutor sender, ExecuteEventArgs e);
    
    public interface ITestExecutor:IDisposable
    {
        IExecuteDataContext DataContext { get; set; }
        event TestStepEventHandler OnBeforeExecuteStep;
        event TestStepEventHandler OnAfterExecuteStep;

        void Run(TestInfo test, bool screenshotAfterEachStep = false, bool stopOnFirstFailed = false, int pauseAfterEachStepFor = 100);
        void Pause(bool valueToSet);
        bool Next();
        void Stop();
    }
}
